/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PllaPyramid.java
 *
 * Created on 09-mar-2012, 22:35:04
 */
package pkgMetodoPyramid.pkgPresentacion;

import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JDesktopPane;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import pkgMetodoPyramid.pkgNegocio.EntityPyramid;
import pkgMetodoPyramid.pkgNegocio.GestorPyramid;
import pkgMetodoPyramid.pkgNegocio.ReqRespPyramid;
import pkgMetodoPyramid.pkgPersistencia.PASPyramidFile;
import pkgMetodoPyramid.pkgReporte.ProcessGraphException;
import pkgMetodoPyramid.pkgSoporte.Constants;
import pkgModuloPrincipal.pkgConfiguracionRegional.PrincipalConfiguracionRegional;
import pkgModuloPrincipal.pkgFachadaPrincipal.PrincipalSistema;
import pkgModuloPrincipal.pkgFachadaPrincipal.pkgSoporte.ConstantsModuloPpal;
import pkgUtil.UtilLayoutPantalla;
import pkgUtil.pkgFrameworkClipboard.pkgAdapter.AdapterForJTable;
import pkgUtil.pkgSupportFile.ReadPASFileException;
import pkgUtil.pkgSupportFile.SavePASFileException;

/**
 *
 * @author Administrador
 */
public class PllaPyramid extends javax.swing.JFrame {

    private PyramidTableModel dtmPyramid;
    private GestorPyramid gestor = null;
    private final int ACTION_INIT = 0;
    private final int ACTION_CALCULAR = 1;
    private final int ACTION_NUEVO = 2;
    private final int ACTION_ABRIR_ARCHIVO = 3;
    private AdapterForJTable listenerClipboard;

    /**
     * Creates new form PllaPyramid
     */
    public PllaPyramid() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        popMenuTblEntrada = new javax.swing.JPopupMenu();
        mnuItemCopy = new javax.swing.JMenuItem();
        mnuItemPaste = new javax.swing.JMenuItem();
        jSPEntrada = new javax.swing.JScrollPane();
        tblEntrada = new javax.swing.JTable();
        btnCalcular = new javax.swing.JButton();
        jPSetDatos = new javax.swing.JPanel();
        lblTitTotalVarones = new javax.swing.JLabel();
        lblTitTotalMujeres = new javax.swing.JLabel();
        lblTitTotal = new javax.swing.JLabel();
        lblValueTotalVarones = new javax.swing.JLabel();
        lblValueTotalMujeres = new javax.swing.JLabel();
        lblValueTotal = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        lblGrupoAbierto = new javax.swing.JLabel();
        cmbGrupoAbierto = new javax.swing.JComboBox();
        btnSetGrupoAbierto = new javax.swing.JButton();
        lblTitulo = new javax.swing.JLabel();
        lblSubTitulo = new javax.swing.JLabel();
        txtTitulo = new javax.swing.JTextField();
        txtSubTitulo = new javax.swing.JTextField();
        btnNuevo = new javax.swing.JButton();
        btnGraficos = new javax.swing.JButton();
        btnGuardar = new javax.swing.JButton();
        btnAbrir = new javax.swing.JButton();
        btnSalir = new javax.swing.JButton();
        mnuBarPyramid = new javax.swing.JMenuBar();
        mnuArchivo = new javax.swing.JMenu();
        opcAbrir = new javax.swing.JMenuItem();
        opcGuardar = new javax.swing.JMenuItem();
        opcSalir = new javax.swing.JMenuItem();
        mnuEdicion = new javax.swing.JMenu();
        opcCopiar = new javax.swing.JMenuItem();
        opcPegar = new javax.swing.JMenuItem();
        mnuComando = new javax.swing.JMenu();
        opcCalcular = new javax.swing.JMenuItem();
        opcGenerarGrafico = new javax.swing.JMenuItem();
        opcNuevo = new javax.swing.JMenuItem();
        mnuConfiguracion = new javax.swing.JMenu();
        opcConfiguracion = new javax.swing.JMenuItem();

        mnuItemCopy.setText("Copiar");
        mnuItemCopy.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mnuItemCopyActionPerformed(evt);
            }
        });
        popMenuTblEntrada.add(mnuItemCopy);

        mnuItemPaste.setText("Pegar");
        mnuItemPaste.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mnuItemPasteActionPerformed(evt);
            }
        });
        popMenuTblEntrada.add(mnuItemPaste);

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("Análisis Método Pyramid");
        setPreferredSize(new java.awt.Dimension(675, 750));
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jSPEntrada.setBorder(javax.swing.BorderFactory.createTitledBorder("Piramide Poblacional"));

        tblEntrada.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        tblEntrada.setComponentPopupMenu(popMenuTblEntrada);
        tblEntrada.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                tblEntradaMouseReleased(evt);
            }
        });
        tblEntrada.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tblEntradaKeyReleased(evt);
            }
        });
        jSPEntrada.setViewportView(tblEntrada);

        btnCalcular.setText("Calcular");
        btnCalcular.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCalcularActionPerformed(evt);
            }
        });

        jPSetDatos.setBorder(javax.swing.BorderFactory.createTitledBorder("Totales "));

        lblTitTotalVarones.setText("Total Varones: ");

        lblTitTotalMujeres.setText("Total Mujeres:");

        lblTitTotal.setText("Total: ");

        lblValueTotalVarones.setText("0");
        lblValueTotalVarones.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        lblValueTotalMujeres.setText("0");
        lblValueTotalMujeres.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        lblValueTotal.setText("0");
        lblValueTotal.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        javax.swing.GroupLayout jPSetDatosLayout = new javax.swing.GroupLayout(jPSetDatos);
        jPSetDatos.setLayout(jPSetDatosLayout);
        jPSetDatosLayout.setHorizontalGroup(
            jPSetDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPSetDatosLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPSetDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblTitTotalVarones)
                    .addComponent(lblTitTotalMujeres)
                    .addComponent(lblTitTotal))
                .addGap(18, 18, 18)
                .addGroup(jPSetDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(lblValueTotal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(lblValueTotalMujeres, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(lblValueTotalVarones, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE))
                .addContainerGap(437, Short.MAX_VALUE))
        );
        jPSetDatosLayout.setVerticalGroup(
            jPSetDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPSetDatosLayout.createSequentialGroup()
                .addGroup(jPSetDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblTitTotalVarones)
                    .addComponent(lblValueTotalVarones))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPSetDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblTitTotalMujeres)
                    .addComponent(lblValueTotalMujeres))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPSetDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblTitTotal)
                    .addComponent(lblValueTotal)))
        );

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Información sobre análisis"));

        lblGrupoAbierto.setText("Grupo Abierto");

        btnSetGrupoAbierto.setText("Modificar");
        btnSetGrupoAbierto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSetGrupoAbiertoActionPerformed(evt);
            }
        });

        lblTitulo.setText("Título");

        lblSubTitulo.setText("Sub título");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblGrupoAbierto)
                    .addComponent(lblTitulo)
                    .addComponent(lblSubTitulo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(cmbGrupoAbierto, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnSetGrupoAbierto))
                    .addComponent(txtTitulo)
                    .addComponent(txtSubTitulo))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblGrupoAbierto)
                    .addComponent(cmbGrupoAbierto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnSetGrupoAbierto))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblTitulo)
                    .addComponent(txtTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblSubTitulo)
                    .addComponent(txtSubTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        btnNuevo.setText("Nuevo");
        btnNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNuevoActionPerformed(evt);
            }
        });

        btnGraficos.setText("Generar Gráficos");
        btnGraficos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGraficosActionPerformed(evt);
            }
        });

        btnGuardar.setText("Guardar");
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });

        btnAbrir.setText("Abrir");
        btnAbrir.setPreferredSize(new java.awt.Dimension(115, 23));
        btnAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAbrirActionPerformed(evt);
            }
        });

        btnSalir.setText("Salir");
        btnSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalirActionPerformed(evt);
            }
        });

        mnuArchivo.setText("Archivo");

        opcAbrir.setText("Abrir");
        opcAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcAbrirActionPerformed(evt);
            }
        });
        mnuArchivo.add(opcAbrir);

        opcGuardar.setText("Guardar");
        opcGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcGuardarActionPerformed(evt);
            }
        });
        mnuArchivo.add(opcGuardar);

        opcSalir.setText("Salir");
        opcSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcSalirActionPerformed(evt);
            }
        });
        mnuArchivo.add(opcSalir);

        mnuBarPyramid.add(mnuArchivo);

        mnuEdicion.setText("Edición");

        opcCopiar.setText("Copiar");
        opcCopiar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcCopiarActionPerformed(evt);
            }
        });
        mnuEdicion.add(opcCopiar);

        opcPegar.setText("Pegar");
        opcPegar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcPegarActionPerformed(evt);
            }
        });
        mnuEdicion.add(opcPegar);

        mnuBarPyramid.add(mnuEdicion);

        mnuComando.setText("Comando");

        opcCalcular.setText("Calcular");
        opcCalcular.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcCalcularActionPerformed(evt);
            }
        });
        mnuComando.add(opcCalcular);

        opcGenerarGrafico.setText("Generar Gráficos");
        opcGenerarGrafico.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcGenerarGraficoActionPerformed(evt);
            }
        });
        mnuComando.add(opcGenerarGrafico);

        opcNuevo.setText("Nuevo");
        opcNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcNuevoActionPerformed(evt);
            }
        });
        mnuComando.add(opcNuevo);

        mnuBarPyramid.add(mnuComando);

        mnuConfiguracion.setText("Configuración");

        opcConfiguracion.setText("Configuracion de Contexto");
        opcConfiguracion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                opcConfiguracionActionPerformed(evt);
            }
        });
        mnuConfiguracion.add(opcConfiguracion);

        mnuBarPyramid.add(mnuConfiguracion);

        setJMenuBar(mnuBarPyramid);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPSetDatos, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jSPEntrada, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(btnCalcular, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(btnGraficos, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(btnNuevo, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(btnAbrir, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(btnGuardar, javax.swing.GroupLayout.DEFAULT_SIZE, 115, Short.MAX_VALUE)
                            .addComponent(btnSalir, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jSPEntrada, javax.swing.GroupLayout.PREFERRED_SIZE, 374, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPSetDatos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnCalcular)
                    .addComponent(btnGraficos)
                    .addComponent(btnAbrir, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnGuardar))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnNuevo)
                    .addComponent(btnSalir))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCalcularActionPerformed
        opcionCalcular();
    }//GEN-LAST:event_btnCalcularActionPerformed

    private void btnSetGrupoAbiertoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSetGrupoAbiertoActionPerformed
        opcionModificarGrupoAbierto();
    }//GEN-LAST:event_btnSetGrupoAbiertoActionPerformed

    private void tblEntradaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblEntradaKeyReleased

        opcionEdicionTabla();
    }//GEN-LAST:event_tblEntradaKeyReleased

    private void tblEntradaMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblEntradaMouseReleased
        opcionEdicionTabla();
    }//GEN-LAST:event_tblEntradaMouseReleased

    private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNuevoActionPerformed
        opcionNuevo();
    }//GEN-LAST:event_btnNuevoActionPerformed

    private void btnGraficosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGraficosActionPerformed
        this.opcionGenerarGraficoGraph();
    }//GEN-LAST:event_btnGraficosActionPerformed

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
        opcionGuardarCalculo();
    }//GEN-LAST:event_btnGuardarActionPerformed

    private void btnAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAbrirActionPerformed
        opcionAbrirCalculo();
    }//GEN-LAST:event_btnAbrirActionPerformed

    private void mnuItemCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuItemCopyActionPerformed
        opcionCopyTblEntrada(evt);
    }//GEN-LAST:event_mnuItemCopyActionPerformed

    private void mnuItemPasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuItemPasteActionPerformed
        opcionPasteTblEntrada(evt);
    }//GEN-LAST:event_mnuItemPasteActionPerformed

    private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalirActionPerformed
        opcionSalir();
    }//GEN-LAST:event_btnSalirActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        opcionSalir();
    }//GEN-LAST:event_formWindowClosing

    private void opcAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcAbrirActionPerformed
        opcionAbrirCalculo();
    }//GEN-LAST:event_opcAbrirActionPerformed

    private void opcGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcGuardarActionPerformed
        opcionGuardarCalculo();
    }//GEN-LAST:event_opcGuardarActionPerformed

    private void opcSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcSalirActionPerformed
        opcionSalir();
    }//GEN-LAST:event_opcSalirActionPerformed

    private void opcCalcularActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcCalcularActionPerformed
       opcionCalcular();
    }//GEN-LAST:event_opcCalcularActionPerformed

    private void opcGenerarGraficoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcGenerarGraficoActionPerformed
       opcionGenerarGraficoGraph();
    }//GEN-LAST:event_opcGenerarGraficoActionPerformed

    private void opcNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcNuevoActionPerformed
        opcionNuevo();
    }//GEN-LAST:event_opcNuevoActionPerformed

    private void opcConfiguracionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcConfiguracionActionPerformed
        opcionConfiguracionContexto();
    }//GEN-LAST:event_opcConfiguracionActionPerformed

    private void opcCopiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcCopiarActionPerformed
        opcionCopyTblEntrada(evt);
    }//GEN-LAST:event_opcCopiarActionPerformed

    private void opcPegarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opcPegarActionPerformed
        opcionPasteTblEntrada(evt);
    }//GEN-LAST:event_opcPegarActionPerformed

    private void opcionSalir() {
        int res= pkgUtil.Message.mensaje_Consulta_YES_NO_OPTION("¿Desea salir del sistema?", "Mensaje");
        if(res!=pkgUtil.Message.RESPUESTA_MSJ_SI){
         return;
        }
        PrincipalSistema.cerrarSistema();
    }

    private void opcionCopyTblEntrada(java.awt.event.ActionEvent evt) {
        listenerClipboard.copyToClipboard();
    }

    private void opcionPasteTblEntrada(java.awt.event.ActionEvent evt) {
        listenerClipboard.pasteFromClipboard();
    }

    private void opcionAbrirCalculo() {
        try {
            PASPyramidFile pasFile = gestor.leerArchivo(this);

            if (pasFile.isCancelOperation()) {
                return;
            }

            if (pasFile.isValid()) {
                cargarHeadDesdeArchivo(pasFile);
                cargarGruposDesdeArchivo(pasFile);
                setGrupoAbierto(pasFile.getReqRespPyramid().getGrupoAbierto());
                gestor.cargarDatosDesdeArchivo(pasFile);
                setEstadoControlesParaAccion(ACTION_ABRIR_ARCHIVO);
                JOptionPane.showMessageDialog(this, "El archivo ha sido cargado correctamente", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(this, "No se pudo cargar el archivo: " + pasFile.getDescriptionState(), "Mensaje", JOptionPane.INFORMATION_MESSAGE);
            }

        } catch (ReadPASFileException ex) {
            JOptionPane.showMessageDialog(this, "Error al intentar grabar cálculo: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, "Error al intentar grabar cálculo: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void opcionConfiguracionContexto(){
      PrincipalConfiguracionRegional.ejecutar();
    }
    
    private void cargarHeadDesdeArchivo(PASPyramidFile pasFile) {
        lblValueTotalVarones.setText(String.valueOf(pasFile.getHeadData().getTotalVarones()));
        lblValueTotalMujeres.setText(String.valueOf(pasFile.getHeadData().getTotalMujeres()));
        lblValueTotal.setText(String.valueOf(pasFile.getHeadData().getTotal()));

        txtTitulo.setText(pasFile.getHeadData().getTitulo());
        txtSubTitulo.setText(pasFile.getHeadData().getSubTitulo());
    }

    private void cargarGruposDesdeArchivo(PASPyramidFile pasFile) {
        try {
            ReqRespPyramid reqRespDefault = pasFile.getReqRespPyramid();
            Iterator it = reqRespDefault.getIterator();
            dtmPyramid.removeFromIndex(0);
            while (it.hasNext()) {
                EntityPyramid entity = (EntityPyramid) it.next();
                dtmPyramid.addEntityPyramid(entity);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "ERROR AL CARGAR GRILLA DESDE ARCHIVO: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void opcionGuardarCalculo() {
        try {
            PASPyramidFile pasFile = gestor.grabarArchivo(this, getTotalVarones(),
                    getTotalMujeres(),
                    getTotal(),
                    txtTitulo.getText(),
                    txtSubTitulo.getText());

            if (pasFile.isCancelOperation()) {
                return;
            }

            if (pasFile.isValid()) {
                JOptionPane.showMessageDialog(this, "El archivo ha sido guardado correctamente", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(this, "No se pudo grabar el archivo: " + pasFile.getDescriptionState(), "Mensaje", JOptionPane.INFORMATION_MESSAGE);
            }

        } catch (SavePASFileException ex) {
            JOptionPane.showMessageDialog(this, "Error al intentar grabar cálculo: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, "Error al intentar grabar cálculo: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }

    }

    private void opcionGenerarGraficoGraph() {
        try {
            gestor.generarGraficos(getTotalVarones(),
                    getTotalMujeres(),
                    getTotal(),
                    txtTitulo.getText(),
                    txtSubTitulo.getText());

        } catch (ProcessGraphException ex) {
            JOptionPane.showMessageDialog(null, "Error en generación de gráficos: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, "Error en generación de gráficos: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Error en generación de gráficos: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }

    }

    private void opcionNuevo() {
        try {
            setEstadoControlesParaAccion(ACTION_NUEVO);
            gestor.newCalculo();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Error en Opción Nuevo: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void opcionEdicionTabla() {
        try {
            calcularTotales();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Error al calcular total: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void calcularTotales() throws Exception {
        calcularTotalVarones();
        calcularTotalMujeres();
        calcularTotal();
    }

    private void calcularTotalVarones() throws Exception {
        Double total = dtmPyramid.sumarize(PyramidTableModel.col_varones);
        Integer intTotal = total.intValue();
        lblValueTotalVarones.setText(String.valueOf(intTotal));
    }

    private void calcularTotalMujeres() throws Exception {
        Double total = dtmPyramid.sumarize(PyramidTableModel.col_mujeres);
        Integer intTotal = total.intValue();
        lblValueTotalMujeres.setText(String.valueOf(intTotal));
    }

    public Integer getTotalVarones() {
        String cadTotalVarones = lblValueTotalVarones.getText();
        if (cadTotalVarones != null) {
            return Integer.valueOf(cadTotalVarones);
        }
        return new Integer("0");
    }

    public Integer getTotalMujeres() {
        String cadTotalMujeres = lblValueTotalMujeres.getText();
        if (cadTotalMujeres != null) {
            return Integer.valueOf(cadTotalMujeres);
        }
        return new Integer("0");
    }

    public Integer getTotal() {
        String cadTotal = lblValueTotal.getText();
        if (cadTotal != null) {
            return Integer.valueOf(cadTotal);
        }
        return new Integer("0");
    }

    private void calcularTotal() {
        Integer totalVarones = getTotalVarones();
        Integer totalMujeres = getTotalMujeres();
        Integer total = totalVarones + totalMujeres;

        lblValueTotal.setText(String.valueOf(total));
    }

    public void abrirPantalla() {
        try {
            dtmPyramid = new PyramidTableModel();
            tblEntrada.setModel(dtmPyramid);
            setLayoutJTable();
            gestor = new GestorPyramid();
            ReqRespPyramid reqRespDefault = gestor.getReqRespDefault();
            cargarGruposDefault(reqRespDefault);
            setEstadoControlesParaAccion(ACTION_INIT);
            UtilLayoutPantalla.centrarEnPantallaJFrame(this);
            UtilLayoutPantalla.insertarIcono(this, ConstantsModuloPpal.PATH_ICONO_PAS);
            setVisible(true);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "ERROR AL ABRIR LA PANTALLA: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void cargarGruposDefault(ReqRespPyramid reqRespDefault) {
        try {
            Iterator it = reqRespDefault.getIterator();
            int indexRow = 0;
            while (it.hasNext()) {
                EntityPyramid entity = (EntityPyramid) it.next();
                dtmPyramid.addEntityPyramid(entity);
                if (gestor.esMinGrupoAbiertoActual(entity)) {
                    dtmPyramid.setIndexRowMinGrupoAbierto(indexRow);
                }
                indexRow++;
                cargarGrupoAbierto(entity);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "ERROR AL CARGAR GRILLA POR DEFAULT: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void inicializarGruposNuevoCalculo() {
        try {
            ReqRespPyramid reqRespDefault = gestor.getReqRespDefault();
            Iterator it = reqRespDefault.getIterator();
            dtmPyramid.removeFromIndex(0);
            while (it.hasNext()) {
                EntityPyramid entity = (EntityPyramid) it.next();
                dtmPyramid.addEntityPyramid(entity);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "ERROR AL CARGAR GRILLA POR DEFAULT: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void cargarGrupoAbierto(EntityPyramid entity) {
        try {
            if (gestor.esGrupoAbiertoValido(entity)) {
                cmbGrupoAbierto.addItem(entity.formatGrupoAbierto());
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, "ERROR AL CARGAR GRUPO ABIERTO: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void setGrupoAbierto(EntityPyramid entity) {
        try {
            if (gestor.esGrupoAbiertoValido(entity)) {
                cmbGrupoAbierto.setSelectedItem(entity.formatGrupoAbierto());
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, "ERROR AL CARGAR GRUPO ABIERTO: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void setLayoutJTable() {
        tblEntrada.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        tblEntrada.setCellSelectionEnabled(true);
        tblEntrada.getTableHeader().setReorderingAllowed(false);
        tblEntrada.getColumnModel().getColumn(PyramidTableModel.col_edad).setPreferredWidth(50);
        tblEntrada.getColumnModel().getColumn(PyramidTableModel.col_varones).setPreferredWidth(50);
        tblEntrada.getColumnModel().getColumn(PyramidTableModel.col_mujeres).setPreferredWidth(50);
        tblEntrada.getColumnModel().getColumn(PyramidTableModel.col_porc_varones).setPreferredWidth(50);
        tblEntrada.getColumnModel().getColumn(PyramidTableModel.col_porc_mujeres).setPreferredWidth(50);
        tblEntrada.getColumnModel().getColumn(PyramidTableModel.col_porc_vtotal).setPreferredWidth(100);
        tblEntrada.getColumnModel().getColumn(PyramidTableModel.col_porc_mtotal).setPreferredWidth(100);

        //Se agrega listener para evento Copy y Paste
        AdapterForJTable adapterListener = new AdapterForJTable();
        adapterListener.registerListener(tblEntrada);
        listenerClipboard = adapterListener;
    }

    private void opcionModificarGrupoAbierto() {
        try {
            String itemGAbierto = String.valueOf(cmbGrupoAbierto.getSelectedItem());
            EntityPyramid entity = new EntityPyramid(itemGAbierto);
            if (gestor.esGrupoAbiertoActual(entity)) {
                JOptionPane.showMessageDialog(null, "El grupo abierto seleccionado ya se encuentra establecido como tal", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            EntityPyramid newGAbiero;
            if (!gestor.agregarIntervalos(entity)) {
                newGAbiero = quitarGrupos(entity);
                calcularTotales();
            } else {
                newGAbiero = agregarGrupos(gestor.getCantGruposToActualGrupoAbierto(entity));
            }
            gestor.setActualGAbierto(newGAbiero);

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "ERROR AL MODIFICAR GRUPO ABIERTO: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private EntityPyramid quitarGrupos(EntityPyramid grupoAbierto) throws Exception {
        int initialIndex = dtmPyramid.getIndexLastRow();
        EntityPyramid entity = dtmPyramid.getEntityPyramed(initialIndex);
        while (entity.compareTo(grupoAbierto) > 0) {
            EntityPyramid entityRemove = dtmPyramid.removeRow(initialIndex);
            //Recupero objeto para sacar luego sus valores
            initialIndex--;
            entity = dtmPyramid.getEntityPyramed(initialIndex);
        }
        //Se quedo parado en el grupo abierto
        entity.transformarAGrupoAbierto();
        dtmPyramid.setEntityPyramid(entity, initialIndex);
        dtmPyramid.setLastEntityPyramid(entity);
        return entity;
    }

    private EntityPyramid agregarGrupos(int cant) throws Exception {
        int initialIndex = dtmPyramid.getIndexLastRow();
        //Transformo el grupo abierto actual a intervalo
        EntityPyramid entity = dtmPyramid.getEntityPyramed(initialIndex);
        entity.transformarAIntervalo();
        dtmPyramid.setEntityPyramid(entity, initialIndex);
        dtmPyramid.setLastEntityPyramid(entity);
        //Empieza a agregar intervalos
        EntityPyramid entityAdd = null;
        for (int i = 0; i < cant; i++) {
            entityAdd = dtmPyramid.getNextEntityPyramid();
            dtmPyramid.addEntityPyramid(entityAdd);
        }
        //Se quedo parado en el grupo abierto
        entityAdd.transformarAGrupoAbierto();
        dtmPyramid.setEntityPyramid(entityAdd, dtmPyramid.getIndexLastRow());
        dtmPyramid.setLastEntityPyramid(entityAdd);
        return entityAdd;
    }

    private void opcionCalcular() {

        UtilLayoutPantalla.initWaiting(this);
        Integer totalVarones = getTotalVarones();
        Integer totalMujeres = getTotalMujeres();
        Integer totalPoblacion = getTotal();
        ArrayList colErrores = new ArrayList();
        boolean res = gestor.validarTotales(totalVarones, totalMujeres, totalPoblacion, colErrores);

        if (!res) {
            String cadErrores = formatErrors(colErrores);
            UtilLayoutPantalla.endWaiting(this);
            JOptionPane.showMessageDialog(this, "Error en parámetros de entrada:\n" + cadErrores, "Mensaje", JOptionPane.ERROR_MESSAGE);
            return;
        }


        iniciarCalculo();
        setEstadoControlesParaAccion(ACTION_CALCULAR);
        UtilLayoutPantalla.endWaiting(this);
    }

    private void iniciarCalculo() {

        try {
            gestor.newCalculo();
            Iterator itDatos = dtmPyramid.getIteratorData();
            Integer totalVarones = getTotalVarones();
            Integer totalMujeres = getTotalMujeres();
            Integer totalPoblacion = getTotal();

            while (itDatos.hasNext()) {
                EntityPyramid entity = (EntityPyramid) itDatos.next();
                gestor.setDataCalculo(totalVarones, totalMujeres, totalPoblacion, entity);
                //Aca mismo se podría agregar el seteo a la tabla,
                //de esta manera es mucho más rápido el algoritmo, en vez
                //de hacer otro recorrido para cargar la tabla
                int index = dtmPyramid.getIndexOf(entity);
                dtmPyramid.updateEntityPyramid(entity, index);

            }

        } catch (Exception ex) {
            UtilLayoutPantalla.endWaiting(this);
            JOptionPane.showMessageDialog(null, "Error al intentar calcular: " + ex.getMessage(), "Mensaje", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void setEstadoControlesParaAccion(int accion) {
        switch (accion) {
            case ACTION_INIT:
                btnCalcular.setEnabled(true);
                btnAbrir.setEnabled(true);
                btnNuevo.setEnabled(false);
                btnGuardar.setEnabled(false);
                btnGraficos.setEnabled(false);
                
                opcCalcular.setEnabled(true);
                opcAbrir.setEnabled(true);
                opcNuevo.setEnabled(false);
                opcGuardar.setEnabled(false);
                opcGenerarGrafico.setEnabled(false);
                
                txtTitulo.setText(Constants.TITULODEFAULT);
                txtSubTitulo.setText(Constants.SUBTITULODEFAULT);
                cmbGrupoAbierto.setSelectedItem(Constants.ITEMMINGRUPOABIERTO);
                dtmPyramid.setCellEditable(true);
                break;
            case ACTION_CALCULAR:
                btnCalcular.setEnabled(false);
                btnNuevo.setEnabled(true);
                btnGraficos.setEnabled(true);
                btnGuardar.setEnabled(true);
                btnAbrir.setEnabled(false);
                
                opcCalcular.setEnabled(false);
                opcNuevo.setEnabled(true);
                opcGenerarGrafico.setEnabled(true);
                opcGuardar.setEnabled(true);
                opcAbrir.setEnabled(false);
                
                dtmPyramid.setCellEditable(false);
                cmbGrupoAbierto.setEnabled(false);
                btnSetGrupoAbierto.setEnabled(false);
                txtTitulo.setEditable(false);
                txtSubTitulo.setEditable(false);
                break;
            case ACTION_NUEVO:
                btnCalcular.setEnabled(true);
                btnNuevo.setEnabled(false);
                btnGraficos.setEnabled(false);
                btnGuardar.setEnabled(false);
                btnAbrir.setEnabled(true);
                
                opcCalcular.setEnabled(true);
                opcNuevo.setEnabled(false);
                opcGenerarGrafico.setEnabled(false);
                opcGuardar.setEnabled(false);
                opcAbrir.setEnabled(true);
                
                dtmPyramid.setCellEditable(true);
                cmbGrupoAbierto.setEnabled(true);
                btnSetGrupoAbierto.setEnabled(true);
                txtTitulo.setEditable(true);
                txtSubTitulo.setEditable(true);
                txtTitulo.setText(Constants.TITULODEFAULT);
                txtSubTitulo.setText(Constants.SUBTITULODEFAULT);
                lblValueTotal.setText("0");
                lblValueTotalVarones.setText("0");
                lblValueTotalMujeres.setText("0");
                cmbGrupoAbierto.setSelectedItem(Constants.ITEMMINGRUPOABIERTO);
                inicializarGruposNuevoCalculo();
                break;
            case ACTION_ABRIR_ARCHIVO:
                btnCalcular.setEnabled(true);
                btnNuevo.setEnabled(true);
                btnGraficos.setEnabled(true);
                btnGuardar.setEnabled(true);
                btnAbrir.setEnabled(true);
                
                opcCalcular.setEnabled(true);
                opcNuevo.setEnabled(true);
                opcGenerarGrafico.setEnabled(true);
                opcGuardar.setEnabled(true);
                opcAbrir.setEnabled(true);
                
                dtmPyramid.setCellEditable(true);
                cmbGrupoAbierto.setEnabled(true);
                btnSetGrupoAbierto.setEnabled(true);
                txtTitulo.setEditable(true);
                txtSubTitulo.setEditable(true);
                break;

        }

    }

    private String formatErrors(ArrayList colErrores) {
        StringBuilder cadErrores = new StringBuilder();
        Iterator itErrors = colErrores.iterator();
        while (itErrors.hasNext()) {
            String error = (String) itErrors.next();
            cadErrores.append("- ").append(error).append("\n");
        }
        return cadErrores.toString();
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAbrir;
    private javax.swing.JButton btnCalcular;
    private javax.swing.JButton btnGraficos;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JButton btnNuevo;
    private javax.swing.JButton btnSalir;
    private javax.swing.JButton btnSetGrupoAbierto;
    private javax.swing.JComboBox cmbGrupoAbierto;
    private javax.swing.JPanel jPSetDatos;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jSPEntrada;
    private javax.swing.JLabel lblGrupoAbierto;
    private javax.swing.JLabel lblSubTitulo;
    private javax.swing.JLabel lblTitTotal;
    private javax.swing.JLabel lblTitTotalMujeres;
    private javax.swing.JLabel lblTitTotalVarones;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JLabel lblValueTotal;
    private javax.swing.JLabel lblValueTotalMujeres;
    private javax.swing.JLabel lblValueTotalVarones;
    private javax.swing.JMenu mnuArchivo;
    private javax.swing.JMenuBar mnuBarPyramid;
    private javax.swing.JMenu mnuComando;
    private javax.swing.JMenu mnuConfiguracion;
    private javax.swing.JMenu mnuEdicion;
    private javax.swing.JMenuItem mnuItemCopy;
    private javax.swing.JMenuItem mnuItemPaste;
    private javax.swing.JMenuItem opcAbrir;
    private javax.swing.JMenuItem opcCalcular;
    private javax.swing.JMenuItem opcConfiguracion;
    private javax.swing.JMenuItem opcCopiar;
    private javax.swing.JMenuItem opcGenerarGrafico;
    private javax.swing.JMenuItem opcGuardar;
    private javax.swing.JMenuItem opcNuevo;
    private javax.swing.JMenuItem opcPegar;
    private javax.swing.JMenuItem opcSalir;
    private javax.swing.JPopupMenu popMenuTblEntrada;
    private javax.swing.JTable tblEntrada;
    private javax.swing.JTextField txtSubTitulo;
    private javax.swing.JTextField txtTitulo;
    // End of variables declaration//GEN-END:variables
}
